/*

	GameObject.h
	
	Class used for describing objects within
	the 3D world.
	Contains a description of the mesh used as
	well as parameters for position, rotation
	and scaling.
	
	Written by Sigurd Suhm 2009

*/

#ifndef _GAMEOBJECT_H
#define _GAMEOBJECT_H

// Includes
#include "IMesh.h"		// Mesh header
#include "Vector.h"		// Vector types

namespace EraAstral
{
	namespace graphics
	{
		class GameObject
		{
			private:
				// Mesh of the game object
				IMesh		*m_mesh;
				
				// World parameters
				Vector3		*m_position;		// Position
				Vector3		*m_rotation;		// Rotation
				Vector3		*m_scale;			// Scale
			
			public:
				// Default constructor
				GameObject();
				// Default destructor
				~GameObject();
				
				// Loads a mesh for the game object
				void LoadMesh(const char *fileName);
				// Draws the game object
				void Draw();
				
				// Accessors
				Vector3 	*GetPosition() const;
				void		SetPosition(const Vector3& position);
				Vector3 	*GetRotation() const;
				void		SetRotation(const Vector3& rotation);
				Vector3 	*GetScale() const;
				void		SetScale(const Vector3& scale);
				
				IMesh		*GetMesh() const;
		};
	}
}

#endif		// _GAMEOBJECT_H
